package cn.itcast.goods.cart.service;

import java.sql.SQLException;
import java.util.List;

import cn.itcast.goods.cart.dao.CartItemDao;
import cn.itcast.goods.cart.domain.CartItem;
import cn.mytools.commons.CommonUtils;

public class CartItemService {
	private CartItemDao cartItemDao = new CartItemDao();

	/**
	 * 查询指定用户所有购物车条目
	 * 
	 * @param uid
	 * @return
	 */
	public List<CartItem> findByUid(String uid) {

		try {
			return cartItemDao.findByUid(uid);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 添加购物车条目
	 * 
	 * @param cartItem
	 */
	public void addCartItem(CartItem cartItem) {
		String uid = cartItem.getUser().getUid();
		String bid = cartItem.getBook().getBid();
		CartItem cartItem2;

		try {
			cartItem2 = cartItemDao.findByUidAndBid(uid, bid);
			if (cartItem2 != null) {// 如果购物车条目存在
				String cartItemId = cartItem2.getCartItemId();
				int totalQuantity = cartItem.getQuantity() + cartItem2.getQuantity();
				cartItemDao.updateQuantity(cartItemId, totalQuantity);
			} else { // 购物车条目不存在
				cartItem.setCartItemId(CommonUtils.uuid());
				cartItemDao.addCartItem(cartItem);
			}
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 批量删除
	 * 
	 * @param cartItemIds
	 */
	public void batchDeleteCartItem(String cartItemIds) {
		try {
			cartItemDao.batchDeleteCartItem(cartItemIds);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 修改条目数量
	 * 
	 * @param cartItemId
	 * @return
	 */
	public CartItem updateQuantity(String cartItemId, int quantity) {
		try {
			cartItemDao.updateQuantity(cartItemId, quantity);
			return cartItemDao.findByCartItemId(cartItemId);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	public List<CartItem> loadCartItems(String cartItemIds) {
		try {
			return cartItemDao.loadCartItems(cartItemIds);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}
